home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Night Owl 6
/
Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso
/
001a
/
com_and4.zip
/
TALKER.CMD
< prev
next >
Wrap
OS/2 REXX Batch file
|
1990-03-12
|
10KB
|
346 lines
S29 = "Talker ver 1.0 " ; 20 chars long
LEGEND S29
S28 = "talker.ovl" ; Our overlay file
S27 = "pc-vco.exc" ; Our exception file
;
; ----- Talker: Scripted interface to VOICE.EXE
;
; R.McG; 3/90, Chicago
; ----------------------------------------------------------------
; Usages:
; S29 -----> Legend line
; S28 -----> Our own overlay file name
; S27 -----> Our exception file
; S26 -----> Previous overlay file name (or null)
;
; N99 -----> Number of lines on screen
;
; -----------------------------------------------------------------------
;
; Initialization
;
; Initial values
;
S26 = "_OVERLAY" ; Save previous overlay, if any
ON ESCAPE GOSUB Esc_Exit ; ESC exit
;
; Set-up the overlay (our interface to VOICE.EXE).
;
OVERLAY S28 ; Load our overlay
IF FAILED ; Stop here if can't load overlay
MESS "!Cannot overlay file: "*S28*"!"
GOTO Exit
ENDIF
;
; Use the overlay to 'open' the driver
;
SCALL 6,N0 ; Entry addr 6 -> open_talk
IF NOT ZERO N0 ; If anything but zero rtnd
MESS "!Cannot open voice driver!"
IF NOT ISFILE "voice.exe" MESS "!VOICE.EXE must be on current subdir!"
GOTO Exit
ENDIF
;
; Load an exception file, if its present
;
SCALL 12,S27,N0 ; Entry addr 12 -> Load exception file
IF NOT ZERO N0 ; If anything but zero rtnd
MESS "!Exception file load error: "*N0*" using: "*S27*"!"
ENDIF ; Not fatal error
GOTO Loop ; And start
;
; Script termination
;
Exit:
IF OVERLAY SCALL 9 ; Entry addr 9 -> Close voice driver
OVERLAY CLEAR ; Clear our own
IF NOT NULL S26 OVERLAY S26 ; If there was a previous, replace it
EXIT
;
; Escape pressed
;
Esc_Exit:
S0 = "Do you wish to terminate TALKER?"
GOSUB Ask_YN ; Prompt
IF FAILED Return ; "N" -> continue
GOTO Exit ; Terminate
;
; Wait for something
;
Loop:
WHILE FKEY or NOT RECEIVE ; While nothing being received
IF FKEY GOTO Fkey ; Skip if a func key pending
ENDWHILE ; .. loop to make kbd fast
RGET S0 80 3 ; Get 80 chars - wait up to 3 secs
IF FAILED GOTO Loop ; IF nothing received, Loop
SCALL 0,S0 ; Pass buffer to the driver
IF NOT FULL GOTO Loop ; If not full rcv buffer
;
; Flush the rcv buffer
;
LEGEND S29*"Flushing buffer" ; Change legend
WHILE FULL ; While buffer full (host xoffed)
RGET S0 80 30 ; Read a line and display, no voice
ENDWHILE ;
LEGEND S29 ; Replace legend
GOTO Loop ; And loop
;
; Function key pending
;
Fkey:
KEYGET S0 ; Read the function key
SWITCH S0
CASE "2E00" ; Alt-C
CLEAR (text) ; Perform
LEGEND S29 ; Repaint legend
ENDCASE
CASE "1200" ; Alt-E
GOTO Echo
ENDCASE
CASE "2C00" ; Alt-Z
GOTO Mask
ENDCASE
CASE "2600" ; Alt-L
GOTO ScrSize
ENDCASE
CASE "2300" ; Alt-H
HANGUP ; perform
ENDCASE
CASE "2200" ; Alt-G
GOTO Blnkln
ENDCASE
CASE "2D00" ; Alt-X
GOTO EndPgm
ENDCASE
CASE "7500" ; Ctl-End
BREAK ; Perform
ENDCASE
CASE "7200" ; Ctl-PrtSc
GOTO Printer
ENDCASE
CASE "7800" ; Alt-1
MACRO 1 ; Perform
ENDCASE
CASE "7900" ; Alt-2
MACRO 2 ; Perform
ENDCASE
CASE "7A00" ; Alt-3
MACRO 3 ; Perform
ENDCASE
CASE "7B00" ; Alt-4
MACRO 4 ; Perform
ENDCASE
CASE "7C00" ; Alt-5
MACRO 5 ; Perform
ENDCASE
CASE "7D00" ; Alt-6
MACRO 6 ; Perform
ENDCASE
CASE "7E00" ; Alt-7
MACRO 7 ; Perform
ENDCASE
CASE "7F00" ; Alt-8
MACRO 8 ; Perform
ENDCASE
CASE "8000" ; Alt-9
MACRO 9 ; Perform
ENDCASE
CASE "8100" ; Alt-0
MACRO 0 ; Perform
ENDCASE
CASE "4100" ; F7
GOTO Log
ENDCASE
CASE "4300" ; F9
GOTO LogHold
ENDCASE
CASE "4400" ; F10
GOSUB Help ; Note uncharacteristic GOSUB
ENDCASE
CASE "7100" ; Alt-F10
SHELL ; Shell to DOS
ENDCASE
;
; Other keypresses are unrecognized
;
DEFAULT
SOUND 100,100 ; Signal error
ENDCASE
ENDSWITCH
GOTO Loop ; And continue
;
; End pgm
;
EndPgm:
SET TTHRU ON ; Inhibit type-through
STACK "^@-" ; Stack another Alt-X
GOTO Exit ; End script (and COM-AND)
;
; Toggle echo
;
Echo:
IF STRCMP "_DUPL" "HALF" ; Test current setting
SET DUPLEX FULL ; .. toggle
ELSE SET DUPLEX HALF ; .. toggle
GOTO Loop ; And continue
;
; Toggle mask
;
Mask:
IF STRCMP "_MASK" "ON " ; Test current setting
SET MASK OFF ; .. toggle
ELSE SET MASK ON ; .. toggle
GOTO Loop ; And continue
;
; Toggle screen size
;
ScrSize:
IF GT "_SSIZ" 25
SET 25 ; .. toggle
ELSE SET 43 ; .. toggle
LEGEND S29 ; Repaint legend
GOTO Loop ; And continue
;
; Toggle printer
;
Printer:
IF STRCMP "_PRINT" "ON " ; Test state
PRINTER OFF ; .. toggle
ELSE PRINTER ON
GOTO Loop ; And continue
;
; Toggle the blank line eater
;
Blnkln:
IF STRCMP "_BSUP" "ON " ; Test current setting
SET BSUPPRESS OFF ; .. toggle
ELSE SET BSUPPRESS ON ; .. toggle
GOTO Loop ; And continue
;
; Toggle the log function
;
Log:
IF STRCMP "_LOGG" "OFF"
S1 = "Enter the transcript file name:"
GOSUB Ask_File ; Get script file name
IF NOT SUCCESS or NULL S0 ; IF ESC'd out
GOTO Loop
ENDIF
LOG OPEN S0
ELSE
LOG CLOSE
ENDIF
GOTO Loop ; Set-up the line to add to output
;
; Toggle the log hold function
;
LogHold:
IF STRCMP "_LOGG" "OFF" ; If not logging
GOTO Loop
ENDIF
IF STRCMP "_LOGH" "OFF"
LOG SUSPEND
ELSE LOG RESUME
GOTO Loop ; Set-up the line to add to output
;
; ----- Subroutine: Ask for a script file name
; S1 passes the prompt used
; SUCCESS returns fact script file successfully opened
; S0 returns the fname
;
Ask_File:
WOPEN 10 10 13 70 (contrast) ASK_ESC
ATSAY 10 12 (contrast) " TALKER Fname "
ATSAY 11 12 (contrast) S1(0:56)
ATSAY 13 30 (contrast) " Press ESC to cancel "
ATGET 12 12 (contrast) 54 S0; Read new fname
WCLOSE
;
; Attempt to execute the entry
;
LJ S0 ; Left justify
S0 = S0 &"" ; Trim spaces
UPPER S0 ; Make pretty
IF NOT NULL S0 ; If nothing entered
SET SUCCESS ON
ELSE
SET SUCCESS OFF
ENDIF
RETURN ; And done
;
; ----- Escape during a subwindow
; .. S0 is returned null
;
Ask_Esc:
S0 = "" ; Make a null return
RETURN
;
; ----- Subroutine: Ask a question and take a y/n answer
; S0 passes the text to be displayed
; SUCCESS returns fact of y/n
;
Ask_YN:
WOPEN 10 10 13 70 (contrast) ASK_ESC
ATSAY 10 12 (contrast) " Talker Y/N "
ATSAY 11 12 (contrast) S0(0:55)
ATSAY 13 30 (contrast) " Press ESC to cancel "
ATGET 12 12 (contrast) 1 S0 ; Read y/n
WCLOSE
;
; Interperet the response
;
IF NULL S0 or FIND S0 "Y" ; If c/r yes
SET SUCCESS ON
ELSE
SET SUCCESS OFF
ENDIF
RETURN ; And done
;
; ----- Subroutine: Help
;
Help:
WOPEN 0, 0,23,79 (default) HELPESC
ATSAY 0, 2 (Default) " Talker Help "
ATSAY 23,28 (Default) " Press any key to continue "
;
; Help message
;
ATSAY 1,2 (default) " The TALKER script expects to find the voice driver (VOICE.EXE) already"
ATSAY 2,2 (default) "loaded. If it does not find the voice driver loaded, this script will try"
ATSAY 3,2 (default) "to load VOICE.EXE from the current subdirectory. If the driver does not"
ATSAY 4,2 (default) "load, it may be for one of two reasons - (1) insufficient memory to load"
ATSAY 5,2 (default) "the driver, or (2) VOICE.EXE not found on the current subdirectory."
ATSAY 6,2 (default) ""
ATSAY 7,2 (default) " The TALKER script itself loads the file TALKER.EXE. This file is NOT a"
ATSAY 8,2 (default) "program that runs by itself... it is a set of machine language subroutines"
ATSAY 9,2 (default) "to the TALKER.CMD script. These routines provide the interface to the voice"
ATSAY 10,2 (default) "driver. The script calls routines in TALKER to speak."
ATSAY 11,2 (default) ""
ATSAY 12,2 (default) " If the TALKER script loads VOICE.EXE, it will terminate VOICE.EXE when"
ATSAY 13,2 (default) "the script terminates. If TALKER does NOT load VOICE.EXE (already running)"
ATSAY 14,2 (default) "you may terminate VOICE.EXE with the VEND.COM utility."
ATSAY 15,2 (default) ""
ATSAY 16,2 (default) " While TALKER is running, type-through is available, and certain function"
ATSAY 17,2 (default) "keys are activated: These are:"
ATSAY 18,2 (default) ""
ATSAY 19,2 (default) "Alt-C (clear) Alt-H (hangup) Alt-0/9 (macro) Ctl-Prtsc (print)"
ATSAY 20,2 (default) "Alt-E (echo) Alt-X (exit COM-AND) Ctl-End (break)"
ATSAY 21,2 (default) "Alt-L (scr size) Alt-Z (mask) F7 (transcript) "
ATSAY 22,2 (default) "Alt-G (blnkln) Alt-F10 (shell) F9 (hold transc) "
;
; Wait for a keypress, and return
;
KEYGET S0
WCLOSE
RETURN
;
; ESCAPE during this screen
;
HELPESC:
RETURN